﻿// <copyright file="SuiteMaskAttributes.cs" company="Sinclair Community College">
// Copyright 2010 Sinclair Community College
// </copyright>
// <originalAuthor>Patrick S. Seymour (patrick.seymour@gmail.com)</originalAuthor>

namespace SinclairCC.AppV
{
    using System;
    using System.Diagnostics.CodeAnalysis;

    /// <summary>
    /// Suite mask values identify the product suites for the system under which the package was created.
    /// </summary>
    /// <remarks>
    /// Please refer to the Microsoft Windows SDK for detailed descriptions of different suites and their respective meanings.
    /// </remarks>
    [Flags]
    public enum SuiteMaskAttributes : int
    {
        /// <summary>
        /// Microsoft Small Business Server was once installed on the system, but may have been
        /// upgraded to another version of Windows.
        /// </summary>
        /// <remarks>
        /// You should not rely upon only the VER_SUITE_SMALLBUSINESS flag to determine whether
        /// Small Business Server has been installed on the system, as both this flag and the
        /// VER_SUITE_SMALLBUSINESS_RESTRICTED flag are set when this product suite is installed.
        /// If you upgrade this installation to Windows Server, Standard Edition, the
        /// VER_SUITE_SMALLBUSINESS_RESTRICTED flag will be cleared—however, the
        /// VER_SUITE_SMALLBUSINESS flag will remain set. In this case, this indicates that Small
        /// Business Server was once installed on this system. If this installation is further
        /// upgraded to Windows Server, Enterprise Edition, the VER_SUITE_SMALLBUSINESS flag will
        /// remain set.
        /// </remarks>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_SMALLBUSINESS = 0x00000001,
        
        /// <summary>
        /// Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition,
        /// or Windows 2000 Advanced Server is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_ENTERPRISE = 0x00000002,
        
        /// <summary>
        /// Microsoft BackOffice components are installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_BACKOFFICE = 0x00000004,

        /// <summary>
        /// Terminal Services is installed.
        /// </summary>
        /// <remarks>
        /// This value is always set. If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS
        /// is not set, the system is running in application server mode.
        /// </remarks>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_TERMINAL = 0x00000010,

        /// <summary>
        /// Microsoft Small Business Server is installed with the restrictive
        /// client license in force.
        /// </summary>
        /// <remarks>
        /// You should not rely upon only the VER_SUITE_SMALLBUSINESS flag to determine whether
        /// Small Business Server has been installed on the system, as both this flag and the
        /// VER_SUITE_SMALLBUSINESS_RESTRICTED flag are set when this product suite is installed.
        /// If you upgrade this installation to Windows Server, Standard Edition, the
        /// VER_SUITE_SMALLBUSINESS_RESTRICTED flag will be cleared—however, the
        /// VER_SUITE_SMALLBUSINESS flag will remain set. In this case, this indicates that Small
        /// Business Server was once installed on this system. If this installation is further
        /// upgraded to Windows Server, Enterprise Edition, the VER_SUITE_SMALLBUSINESS flag will
        /// remain set.
        /// </remarks>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x00000020,

        /// <summary>
        /// Windows XP Embedded is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_EMBEDDEDNT = 0x00000040,

        /// <summary>
        /// Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition,
        /// or Windows 2000 Datacenter Server is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_DATACENTER = 0x00000080,

        /// <summary>
        /// Remote Desktop is supported, but only one interactive session is supported.
        /// </summary>
        /// <remarks>
        /// This value is set unless the system is running in application server mode.
        /// </remarks>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_SINGLEUSERTS = 0x00000100,

        /// <summary>
        /// Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP Home Edition is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_PERSONAL = 0x00000200,

        /// <summary>
        /// Windows Server 2003, Web Edition is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_BLADE = 0x00000400,

        /// <summary>
        /// Windows Storage Server 2003 R2 or Windows Storage Server 2003 is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_STORAGE_SERVER = 0x00002000,

        /// <summary>
        /// Windows Server 2003, Compute Cluster Edition is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_COMPUTE_SERVER = 0x00004000,

        /// <summary>
        /// Windows Home Server is installed.
        /// </summary>
        [SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores", Justification = "This value is defined in the Microsoft Windows SDK.")]
        [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification = "This value is defined in the Microsoft Windows SDK.")]
        VER_SUITE_WH_SERVER = 0x00008000
    }
}
